Diagnostics are software programs executed on a computer for the purpose of detecting and identifying faults in the computer hardware. The most common type of diagnostics is disk-based diagnostics. A disk-based diagnostic program is stored on either a hard or floppy disk and is retrieved from disk and executed by the computer's central processing unit ("CPU") under the control of the computer's operating system for the purpose of diagnosing the computer's hardware components.
The severe limitation in disk-based diagnostics is that, to load and execute the diagnostic program, the computer system needs at least a functioning disk drive, keyboard, CPU, main memory and video monitor. Therefore, disk-based diagnostics can only be invoked when essentially the entire computer system is functioning. However, the typical problems which would prompt one to invoke a diagnostic program to diagnose involve faults in the system that prevent the computer from starting up ("booting") in the first place. Thus, the computer cannot execute the disk-based diagnostics required to diagnose what is wrong with the computer: a seemingly insoluble Catch-22.
Another type of diagnostic program, rather than being disk-based, is embedded into the computer hardware (termed "firmware"). These are termed "embedded" or "ROM-based" diagnostics. The only diagnostic program of this type currently in use is a standard feature on most personal computers called power-on self-test ("POST") diagnostics, arranged in personal computers as a portion of the basic input/output system ("BIOS"). Such BIOS POST diagnostic programs are executed automatically and mandatorily when the computer system boots and at no other time, not allowing the computer user to control whether or when the diagnostic is executed.
Major limitations in execution speed and size of the actual code are placed on BIOS POST diagnostic programs. First, users want to flip the main power switch on their computer and have it boot, complete its diagnostic routines and be ready for their bidding very quickly. They do not want to wait for extensive component diagnostic testing to be performed. In addition, POST diagnostic programs reside in a 64K portion of the computer system's read-only memory ("ROM") BIOS and, because ROM BIOS must perform many other non-diagnostics functions, POST diagnostics are allocated only a small portion of that space. Therefore, one designing POST diagnostics has very little memory space available for code and is constrained to write very simple (and time-efficient) tests.
One prior art BIOS POST diagnostics routine offered in certain Hewlett-Packard personal computers represents a small variation on the above-described more traditional BIOS POST routine. If that routine finds a flaw in the computer system, then it will display ROM-resident trouble shooting flow charts. However, the user still has no control over the invocation of that routine, apart from rebooting the computer from scratch.
Another variation on the above is found in IBM 5100 systems. These systems provide a means of entering and exiting diagnostics with a series of keystrokes entered via the keyboard. Although the user can exit the diagnostics routines and resume normal operation, the diagnostics routines require the keyboard to function to be invoked. Therefore, the keyboard driver software within the operating system, the keyboard port, the keyboard and all intermediate buses must be fully functional to execute the diagnostics routines.
Thus, it is apparent that a need exists in the prior art for a ROM-based diagnostics program that 1) a user can specifically invoke at any time, 2) requires an absolute minimum of functioning hardware and software to execute and 3) does not require a reboot of the system to thereby detect faults that may prevent the system from fully booting.